package com.developpez.rpouiller.testsjunit4.java4;

import org.junit.Assert;
import org.junit.Test;


public class TestSimple {

    /**
     * test d'addition de 2 nombres
     */
    @Test
    public void additionAvecDeuxNombres() {
        final long lAddition = Operations.additionner(new long[]{10, 20});
        Assert.assertEquals(30, lAddition);
    }

    /**
     * test d'addition de 2 nombres
     */
    @Test
    public void additionAvexNocmbresNeg() {
        final long lAddition = Operations.additionner(new long[]{-10, 
20});
      Assert.assertEquals(10, lAddition);
    }

   /**
     * test d'addition de 5 nombres
     */
    @Test
    public void additionAvecCinqNombres() {
        final long lAddition = Operations.additionner(new long[]{256, 
512, 1024, 2048, 4096});
       Assert.assertEquals(7936, lAddition);
    }

     /**
      * test de multiplication de 2 nombres
      */
     @Test
     public void mutiplicationAvecDeuxNombres() {
         final long lMultiplication = Operations.multiplier(new 
long[]{10, 20});
         Assert.assertEquals(200, lMultiplication);
     }

     /**
      * test de multiplication de 2 nombres
      */
     @Test
     public void mutiplicationAvecNombreNeg() {
         final long lMultiplication = Operations.multiplier(new 
long[]{-10, 20});
         Assert.assertEquals(-200, lMultiplication);
     }


     /**
      * test de multiplication de 5 nombres
      */
     @Test
     public void testMutiplicationAvecCinqNombres() {
         final long lMultiplication = Operations.multiplier(new long[]{256, 512, 1024, 2048, 4096});
         Assert.assertEquals(1125899906842624L, lMultiplication);
     }
     /**
      * test de division de 2 nombres
      */
     @Test
     public void testDivisionAvecDeuxNombre() {
         final long lDivision = Operations.diviser(new long[]{6,2});
         Assert.assertEquals(3, lDivision);
     }

     /**
      * test de division de 3 nombres
      */
     @Test
     public void testDivisionAvecTroisNombre() {
         final long lDivision = Operations.diviser(new long[]{6,2,1});
         Assert.assertEquals(3, lDivision);
     }

     /**
      * test de division de 1 nombres
      */
     @Test(expected=IllegalArgumentException.class)
     public void testDivisionAvecUnNombre() {
         final long lDivision = Operations.diviser(new long[]{256});
     }

     /**
      * test de soustraction de 2 nombres
      */
     @Test
     public void testSoustractionnAvecDeuxNombre() {
         final long lSoustraction = (long) Operations.soustraire(new 
long[]{6,2});
         Assert.assertEquals(4, lSoustraction);
     }

     /**
      * test de soustraction de 3 nombres
      */
     @Test
     public void testSoustractionAvecTroisNombre() {
         final long lSoustraction = (long) Operations.soustraire(new 
long[]{6,2,1});
         Assert.assertEquals(3, lSoustraction);
     }

     /**
      * test de soustraction de 1 nombres
      */
     @Test(expected=IllegalArgumentException.class)
     public void testSoustractionAvecUnNombre() {
         final long lSoustraction = (long) Operations.soustraire(new 
long[]{256});
     }

     /**
      * Test pythagore avec seulement deux cot�
      */
     @Test(expected=IllegalArgumentException.class)
     public void testPhytagorDeuxCote()
     {
         long [][] res = {{16,25,9},{16,25}};
         final Boolean[] lphytagore = Operations.pythagore(res);
     }

     /**
      * Test pythagore avec deux triangles
      */
     @Test
     public void testPhytagorDeuxTriangle()
     {
         long [][] res = {{3,4,5},{16,25,10}};
         final Boolean[] lphytagore = Operations.pythagore(res);
         final Boolean [] expecteds = {true,false};
         Assert.assertEquals(expecteds, lphytagore);
     }

     /**
      * Test pythagore avec un triangle Correct
      */
     @Test
     public void testPhytagorUnTriangle()
     {
         long [][] res = {{3,4,5}};
         final Boolean[] lphytagore = Operations.pythagore(res);
         final Boolean [] expecteds = {true};
         Assert.assertEquals(expecteds, lphytagore);
     }

     /**
      * Test pythagore avec un triangle Incorrect
      */
     @Test
     public void testPhytagorUnTriangleFaux()
     {
         long [][] res = {{9,16,255}};
         final Boolean[] lphytagore = Operations.pythagore(res);
         final Boolean [] expecteds = {false};
         Assert.assertEquals(expecteds, lphytagore);
     }




}